package com.itheima.反射reflect.基于反射方式操作成员方法;


import java.lang.reflect.Method;

public class ReflectDemo {
    public static void main(String[] args) throws Exception {
        //参数以：用obj对象调用该方法
        //参数二：调用方法的传递的参数（如果没有就不写）
        //返回值：方法的返回值（如果没有就不写）
        //1.获取class对象
        Class clazz = Class.forName("com.itheima.反射reflect.基于反射方式操作成员方法.Student");
        //获取里面的method对象
        Method method = clazz.getDeclaredMethod("function4", String.class);
        //暴力反射
        method.setAccessible(true);
        //运行functio4方法
        //创建一个Student对象，当作方法的调用者
        Student student = (Student) clazz.newInstance();
        //运行方法：invoke：拿方法的第一个参数作为真正的调用者，调用当前方法对象
        Object result = method.invoke(student, "zhangsan");
        //打印一下返回值
        System.out.println(result);
    }
}

class Student{
    private String function4(String name){
        System.out.println("function4方法，有参有返回值，参数不变"+name);
        return "aaa";
    }
}